"use strict"

/**
 * @临时脚本 测试用的
 */

// 导入tfjs库和tfjs-visor库
import tf from "@tensorflow/tfjs"
// import tfvis from "@tensorflow/tfjs-vis"
// 导入全局方法
// 导入机器学习库的公共对象、公共方法
// import { nodeXlsxToJs } from "./scripts/node-script.js"
// 导入数据集
// import { ramanData } from "./datasets/raman-dataset.js"
// nodeXlsxToJs("./datasets/波谱数据集.xlsx")

// import { createCnnModel } from "./scripts/models/raman-cnn.js"

const inputSymbolTensor = tf.input({
  name: "input",
  // 输入空间的形状，不需要加batchSize的null
  shape: [2],
})

const denseClassSymbolTensor = tf.layers.dense({
  name: "output-class",
  // 输出空间的维度
  units: 2,
  // 启用偏差
  useBias: false,
  // 无激活函数
  activation: undefined,
}).apply(inputSymbolTensor)

const denseRegressionSymbolTensor = tf.layers.dense({
  name: "output-regression",
  // 输出空间的维度
  units: 3,
  // 启用偏差
  useBias: false,
  // 无激活函数
  activation: undefined,
}).apply(inputSymbolTensor)

const model = tf.model({
  name: "cnn-model",
  // 输入张量
  inputs: inputSymbolTensor,
  // 输出张量
  outputs: [denseClassSymbolTensor, denseRegressionSymbolTensor]
})

model.compile({
  optimizer: 'adam', // 使用Adam优化器
  loss: {
    "output-class": 'binaryCrossentropy', // 分类任务的损失函数
    "output-regression": 'meanSquaredError' // 回归任务的损失函数
  },
  // 可以单独为每个任务指定指标，也可以只指定一个通用指标
  metrics: {
    "output-class": ['accuracy'], // 分类任务的指标
    "output-regression": ['mse'] // 回归任务的指标
  }
});





model.summary()
